/* 

给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true
示例 2:

输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。

进阶:
如果输入字符串包含 unicode 字符怎么办？你能否调整你的解法来应对这种情况？

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/valid-anagram
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

*/

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */

// 字符串 -> 数组 -> 排序 -> 字符串
var isAnagram = function (s, t) {
    let letterSort = function (a, b) {
        return a > b ? 1 : -1;
    }

    s = s.split("").sort(letterSort).join("");
    t = t.split("").sort(letterSort).join("");

    return s == t ? true : false;
};

// 哈希表
var isAnagram = function (s, t) {
    let map = new Map();

    if (s.length !== t.length) return false;

    for (let i = 0; i < s.length; i++) {
        if (!map.has(s[i])) {
            map.set(s[i], 1);
        } else {
            map.set(s[i], map.get(s[i]) + 1);
        }

        if (!map.has(t[i])) {
            map.set(t[i], -1);
        } else {
            map.set(t[i], map.get(t[i]) - 1);
        }
    }

    for (let letter of map) {
        if (letter[1] !== 0) {
            return false;
        }
    }

    return true;
};